
/**
 * 
 * 封装:
 * 封装的本质是把抽象出来的属性和对方法组合在一起,只对外暴露指定的接口，
 * 且属性值被保护在内部, 只有通过接口进行修改和读取，不用考虑内部如何实现。
 * 函数就是最基础的代码封装形式，面向对象思想中的封装仍以函数为基础
 */

/**
 * get set 两种形式
 * protected
 * public 
 * private
 * default(public)
 * 单列例子
 */

class Manager{
    private static instance:Manager  = new Manager()
    private constructor(){}
    static getInstance(){
        return this.instance
    }
    print(){
        console.log("print");
    }
}
// const manager = new Manager()
// const manager2 = new Manager()
// console.log(manager === manager2);

// Manager.getInstance().print()
// const m1 = Manager.getInstance()
// const m2 = Manager.getInstance()
// console.log(m1 === m2);


// class AAA{
//     protected name =""
//     // get name():string{
//     //     return this.name
//     // }
//     // set name(name:string){
//     //     this._name = name
//     // }
// }

// class BBB extends AAA{
//     call(){
//         super.name
//     }
// }
// // const aa = new AAA()
// // aa.name
